// 一，函数作为参数
function forEach(arr,fn){
  for(let i=0;i<arr.length;i++){
    fn(arr[i])
  }
}
let array=[1,3,5,7,8]
forEach(array,item=>console.log(item))
// 二，函数作为返回值
function once (fn) {
  let haveRunning=false
  return function(){
    if (!haveRunning){
      haveRunning=true
      return fn.apply(this,arguments)
    }
  }
}
// 三，模拟函数
function every (arr, fn) {//所有元素是否都能通过某个指定函数的测试
  let result=true
  for(let i of arr){
    if(!fn(i)){
      result=false
      break 
    }
  }
  return result
}
function some (arr,fn) { //是否有一个元素不能通过某个指定函数的测试
  let res=false
  for(let i of arr){
    if(fn(i)){
      res=true
      break
    }
  }
  return res
}
function map (arr,fn) { 
  let result=[]
  for(let i of arr){
    result.push(fn(i))
  }
  return arr
}
function filter (arr,fn) {//过滤掉符合的操作。
  let result=[]
  for(let i of arr){
    if(fn(i)){
      result.push(i)
    }
  }
  return result
}


